home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 2009 February
/
PCWFEB09.iso
/
Software
/
Resources
/
Chat & Communication
/
Digsby build 37
/
digsby_setup.exe
/
lib
/
wx
/
py
/
editwindow.pyo
(
.txt
)
< prev
next >
Wrap
Python Compiled Bytecode
|
2008-10-13
|
9KB
|
258 lines
# Source Generated with Decompyle++
# File: in.pyo (Python 2.5)
__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
__cvsid__ = '$Id: editwindow.py 48373 2007-08-25 01:32:08Z RD $'
__revision__ = '$Revision: 48373 $'[11:-2]
import wx
from wx import stc
import keyword
import os
import sys
import time
import dispatcher
from version import VERSION
if 'wxMSW' in wx.PlatformInfo:
FACES = {
'times': 'Times New Roman',
'mono': 'Courier New',
'helv': 'Arial',
'lucida': 'Lucida Console',
'other': 'Comic Sans MS',
'size': 10,
'lnsize': 8,
'backcol': '#FFFFFF',
'calltipbg': '#FFFFB8',
'calltipfg': '#404040' }
elif 'wxGTK' in wx.PlatformInfo and 'gtk2' in wx.PlatformInfo:
FACES = {
'times': 'Serif',
'mono': 'Monospace',
'helv': 'Sans',
'other': 'new century schoolbook',
'size': 10,
'lnsize': 9,
'backcol': '#FFFFFF',
'calltipbg': '#FFFFB8',
'calltipfg': '#404040' }
elif 'wxMac' in wx.PlatformInfo:
FACES = {
'times': 'Lucida Grande',
'mono': 'Monaco',
'helv': 'Geneva',
'other': 'new century schoolbook',
'size': 13,
'lnsize': 10,
'backcol': '#FFFFFF',
'calltipbg': '#FFFFB8',
'calltipfg': '#404040' }
else:
FACES = {
'times': 'Times',
'mono': 'Courier',
'helv': 'Helvetica',
'other': 'new century schoolbook',
'size': 12,
'lnsize': 10,
'backcol': '#FFFFFF',
'calltipbg': '#FFFFB8',
'calltipfg': '#404040' }
class EditWindow(stc.StyledTextCtrl):
revision = __revision__
def __init__(self, parent, id = -1, pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.CLIP_CHILDREN | wx.SUNKEN_BORDER):
stc.StyledTextCtrl.__init__(self, parent, id, pos, size, style)
self._EditWindow__config()
self.Bind(stc.EVT_STC_UPDATEUI, self.OnUpdateUI, id = id)
dispatcher.connect(receiver = self._fontsizer, signal = 'FontIncrease')
dispatcher.connect(receiver = self._fontsizer, signal = 'FontDecrease')
dispatcher.connect(receiver = self._fontsizer, signal = 'FontDefault')
def _fontsizer(self, signal):
size = self.GetZoom()
if signal == 'FontIncrease':
size += 1
elif signal == 'FontDecrease':
size -= 1
elif signal == 'FontDefault':
size = 0
self.SetZoom(size)
def __config(self):
self.setDisplayLineNumbers(False)
self.SetLexer(stc.STC_LEX_PYTHON)
self.SetKeyWords(0, ' '.join(keyword.kwlist))
self.setStyles(FACES)
self.SetViewWhiteSpace(False)
self.SetTabWidth(4)
self.SetUseTabs(False)
self.autoComplete = True
self.autoCompleteIncludeMagic = True
self.autoCompleteIncludeSingle = True
self.autoCompleteIncludeDouble = True
self.autoCompleteCaseInsensitive = True
self.AutoCompSetIgnoreCase(self.autoCompleteCaseInsensitive)
self.autoCompleteAutoHide = False
self.AutoCompSetAutoHide(self.autoCompleteAutoHide)
self.AutoCompStops(' .,;:([)]}\'"\\<>%^&+-=*/|`')
self.autoCallTip = True
self.callTipInsert = True
self.CallTipSetBackground(wx.WHITE)
self.CallTipSetForeground(wx.BLACK)
self.SetWrapMode(False)
try:
self.SetEndAtLastLine(False)
except AttributeError:
pass
def setDisplayLineNumbers(self, state):
self.lineNumbers = state
if state:
self.SetMarginType(1, stc.STC_MARGIN_NUMBER)
self.SetMarginWidth(1, 40)
else:
self.SetMarginType(1, 0)
self.SetMarginWidth(1, 10)
def setStyles(self, faces):
self.StyleSetSpec(stc.STC_STYLE_DEFAULT, 'face:%(mono)s,size:%(size)d,back:%(backcol)s' % faces)
self.StyleClearAll()
self.SetSelForeground(True, wx.SystemSettings.GetColour(wx.SYS_COLOUR_HIGHLIGHTTEXT))
self.SetSelBackground(True, wx.SystemSettings.GetColour(wx.SYS_COLOUR_HIGHLIGHT))
self.StyleSetSpec(stc.STC_STYLE_LINENUMBER, 'back:#C0C0C0,face:%(mono)s,size:%(lnsize)d' % FACES)
self.StyleSetSpec(stc.STC_STYLE_CONTROLCHAR, 'face:%(mono)s' % faces)
self.StyleSetSpec(stc.STC_STYLE_BRACELIGHT, 'fore:#0000FF,back:#FFFF88')
self.StyleSetSpec(stc.STC_STYLE_BRACEBAD, 'fore:#FF0000,back:#FFFF88')
self.StyleSetSpec(stc.STC_P_DEFAULT, 'face:%(mono)s' % faces)
self.StyleSetSpec(stc.STC_P_COMMENTLINE, 'fore:#007F00,face:%(mono)s' % faces)
self.StyleSetSpec(stc.STC_P_NUMBER, '')
self.StyleSetSpec(stc.STC_P_STRING, 'fore:#7F007F,face:%(mono)s' % faces)
self.StyleSetSpec(stc.STC_P_CHARACTER, 'fore:#7F007F,face:%(mono)s' % faces)
self.StyleSetSpec(stc.STC_P_WORD, 'fore:#00007F,bold')
self.StyleSetSpec(stc.STC_P_TRIPLE, 'fore:#7F0000')
self.StyleSetSpec(stc.STC_P_TRIPLEDOUBLE, 'fore:#000033,back:#FFFFE8')
self.StyleSetSpec(stc.STC_P_CLASSNAME, 'fore:#0000FF,bold')
self.StyleSetSpec(stc.STC_P_DEFNAME, 'fore:#007F7F,bold')
self.StyleSetSpec(stc.STC_P_OPERATOR, '')
self.StyleSetSpec(stc.STC_P_IDENTIFIER, '')
self.StyleSetSpec(stc.STC_P_COMMENTBLOCK, 'fore:#7F7F7F')
self.StyleSetSpec(stc.STC_P_STRINGEOL, 'fore:#000000,face:%(mono)s,back:#E0C0E0,eolfilled' % faces)
def OnUpdateUI(self, event):
if self.AutoCompActive() or self.CallTipActive():
return None
braceAtCaret = -1
braceOpposite = -1
charBefore = None
caretPos = self.GetCurrentPos()
if caretPos > 0:
charBefore = self.GetCharAt(caretPos - 1)
styleBefore = self.GetStyleAt(caretPos - 1)
if charBefore and chr(charBefore) in '[]{}()' and styleBefore == stc.STC_P_OPERATOR:
braceAtCaret = caretPos - 1
if braceAtCaret < 0:
charAfter = self.GetCharAt(caretPos)
styleAfter = self.GetStyleAt(caretPos)
if charAfter and chr(charAfter) in '[]{}()' and styleAfter == stc.STC_P_OPERATOR:
braceAtCaret = caretPos
if braceAtCaret >= 0:
braceOpposite = self.BraceMatch(braceAtCaret)
if braceAtCaret != -1 and braceOpposite == -1:
self.BraceBadLight(braceAtCaret)
else:
self.BraceHighlight(braceAtCaret, braceOpposite)
def CanCopy(self):
return self.GetSelectionStart() != self.GetSelectionEnd()
def CanCut(self):
if self.CanCopy():
pass
return self.CanEdit()
def CanEdit(self):
return not self.GetReadOnly()
def CanPaste(self):
if stc.StyledTextCtrl.CanPaste(self):
pass
return self.CanEdit()
def GetLastPosition(self):
return self.GetLength()
def GetRange(self, start, end):
return self.GetTextRange(start, end)
def GetSelection(self):
return (self.GetAnchor(), self.GetCurrentPos())
def ShowPosition(self, pos):
line = self.LineFromPosition(pos)
self.GotoLine(line)
def DoFindNext(self, findData, findDlg = None):
backward = not (findData.GetFlags() & wx.FR_DOWN)
matchcase = findData.GetFlags() & wx.FR_MATCHCASE != 0
end = self.GetLastPosition()
textstring = self.GetRange(0, end)
findstring = findData.GetFindString()
if not matchcase:
textstring = textstring.lower()
findstring = findstring.lower()
if backward:
start = self.GetSelection()[0]
loc = textstring.rfind(findstring, 0, start)
else:
start = self.GetSelection()[1]
loc = textstring.find(findstring, start)
if loc == -1 and start != 0:
if backward:
start = end
loc = textstring.rfind(findstring, 0, start)
else:
start = 0
loc = textstring.find(findstring, start)
if loc == -1:
dlg = wx.MessageDialog(self, 'Unable to find the search text.', 'Not found!', wx.OK | wx.ICON_INFORMATION)
dlg.ShowModal()
dlg.Destroy()
if findDlg:
if loc == -1:
wx.CallAfter(findDlg.SetFocus)
return None
else:
findDlg.Close()
self.ShowPosition(loc)
self.SetSelection(loc, loc + len(findstring))